package cn.iocoder.yudao.module.reading.controller.admin.audio.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import jakarta.validation.constraints.Min;

/**
 * 音频资源创建 Request VO
 */
@Schema(description = "管理后台 - 音频资源创建 Request VO")
@Data
public class AudioResourceCreateReqVO {

    @Schema(description = "音频标题", requiredMode = Schema.RequiredMode.REQUIRED, example = "小红帽的故事")
    @NotBlank(message = "音频标题不能为空")
    @Size(max = 100, message = "音频标题长度不能超过100个字符")
    private String title;

    @Schema(description = "音频副标题/描述", example = "经典童话故事，适合3-6岁儿童")
    @Size(max = 200, message = "音频副标题长度不能超过200个字符")
    private String subtitle;

    @Schema(description = "音频文件URL", example = "https://example.com/audio/story.mp3")
    private String audioUrl;

    @Schema(description = "封面图片URL", example = "https://example.com/images/cover.jpg")
    private String cover;

    @Schema(description = "音频时长（秒）", example = "180")
    @Min(value = 0, message = "音频时长不能为负数")
    private Integer duration;

    @Schema(description = "音频分类", requiredMode = Schema.RequiredMode.REQUIRED, example = "english")
    @NotBlank(message = "音频分类不能为空")
    private String category;

    @Schema(description = "语言类型", example = "en")
    private String language;

    @Schema(description = "关联绘本ID", example = "1")
    private Long bookId;

    @Schema(description = "关联绘本集ID", example = "1")
    private Long bookSetId;

    @Schema(description = "排序权重", example = "100")
    @Min(value = 0, message = "排序权重不能为负数")
    private Integer sortOrder;

    @Schema(description = "是否启用", example = "true")
    private Boolean enabled;
}
